package VARCHAR;

public class VARCHAR_CHAR {
    /*
        CHAR和VARCHAR的区别
        1 长度和储存空间的区别
        * CHAR 定长字符串
            长度在表创建时就确定了 数据长度不足用空格填充 都会预留10个字符的位置 1-255
        * VARCHAR 变长字符串
            长度在表创建时就确定了 不会用空格代替空位 会存储实际使用的字符数 1-65535
        2 性能区别
        * CHAR 查询快 插入和修改慢
            长度固定 布局更紧凑 有利于缓存预读 对于全表扫描或者基于固定长度查询的查询 理论上
            可能会提供更一致的访问速度 但是因为空格填充特性 增删慢
        * VARCHAR 存储灵活 但是每个值都要额外存储长度信息 查找比CHAR慢 但是因为不需要填充
            空格 插入和删除会快一些
        3 使用场景
        * CHAR 定长特性 身份证 电话号码等等
        * VARCHAR 变长特性 快递地址等等
     */
    /*
        BETWEEN...AND...的开闭特性
        它到底是开区间还是闭区间
            在查询时 此关键字是闭区间 包含两端的查询
     */
    /*
        列设置为主键自增时 如果表内达到最大值 会发生什么情况 应该采取什么措施
        情况1 插入失败 由于ID达到了INT最大范围导致失败报错
        情况2 伴随着业务中断 由于无法新增 于是与表相关的所有新增功能全部失效
             导致用户体验感下降
        措施1 转化数据类型 把INT转化为BIGINT 这种方案一般不用 可作为临时措施使用
        措施2 重新设计主键策略---用UUID或分布式ID 雪花ID等等 或者用符合列设置主键
     */
}
